package com.haoxuer.discover.plug.data.plugs.file.define;


import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class BaseState implements State {
  
  private boolean state = false;
  private String info = null;
  
  private Map<String, String> infoMap = new HashMap<String, String>();
  
  public BaseState() {
    this.state = true;
  }
  
  public BaseState(boolean state) {
    this.setState(state);
  }
  
  public BaseState(boolean state, String info) {
    this.setState(state);
    this.info = info;
  }
  
  public BaseState(boolean state, int infoCode) {
    this.setState(state);
    this.info = AppInfo.getStateInfo(infoCode);
  }
  
  public boolean isSuccess() {
    return this.state;
  }
  
  public void setState(boolean state) {
    this.state = state;
  }
  
  public void setInfo(String info) {
    this.info = info;
  }
  
  public void setInfo(int infoCode) {
    this.info = AppInfo.getStateInfo(infoCode);
  }
  
  @Override
  public String toJSONString() {
    return this.toString();
  }
  
  public String toString() {
    
    String key = null;
    String stateVal = this.isSuccess() ? AppInfo.getStateInfo(AppInfo.SUCCESS) : this.info;
    
    StringBuilder builder = new StringBuilder();
    
    builder.append("{\"state\": \"" + stateVal + "\"");
    
    Iterator<String> iterator = this.infoMap.keySet().iterator();
    
    while (iterator.hasNext()) {
      
      key = iterator.next();
      
      builder.append(",\"" + key + "\": \"" + this.infoMap.get(key) + "\"");
      
    }
    
    builder.append("}");
    
    return Encoder.toUnicode(builder.toString());
    
  }
  
  @Override
  public void putInfo(String name, String val) {
    this.infoMap.put(name, val);
  }
  
  @Override
  public void putInfo(String name, long val) {
    this.putInfo(name, val + "");
  }
  
}
